<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Arduino LibHelix: libhelix::AACDecoderHelix Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Arduino LibHelix
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>libhelix</b></li><li class="navelem"><a class="el" href="classlibhelix_1_1_a_a_c_decoder_helix.html">AACDecoderHelix</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classlibhelix_1_1_a_a_c_decoder_helix-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">libhelix::AACDecoderHelix Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>A simple Arduino API for the libhelix AAC decoder. The data us provided with the help of <a class="el" href="classlibhelix_1_1_common_helix.html#a819f83e0c2bdcac195c2170c205bd0f3" title="decodes the next segments from the input. The data can be provided in one big or in small incremental...">write()</a> calls. The decoded result is available either via a callback method or via an output stream.  
 <a href="classlibhelix_1_1_a_a_c_decoder_helix.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_a_a_c_decoder_helix_8h_source.html">AACDecoderHelix.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for libhelix::AACDecoderHelix:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classlibhelix_1_1_a_a_c_decoder_helix.png" usemap="#libhelix::AACDecoderHelix_map" alt=""/>
  <map id="libhelix::AACDecoderHelix_map" name="libhelix::AACDecoderHelix_map">
<area href="classlibhelix_1_1_common_helix.html" title="Common Simple Arduino API." alt="libhelix::CommonHelix" shape="rect" coords="0,0,161,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a4225ee6efbb011806774f202e3b2c1cb"><td class="memItemLeft" align="right" valign="top"><a id="a4225ee6efbb011806774f202e3b2c1cb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>AACDecoderHelix</b> (Print &amp;output)</td></tr>
<tr class="separator:a4225ee6efbb011806774f202e3b2c1cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c238023ba8920f168572230d0be11da"><td class="memItemLeft" align="right" valign="top"><a id="a5c238023ba8920f168572230d0be11da"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>AACDecoderHelix</b> (AACDataCallback dataCallback)</td></tr>
<tr class="separator:a5c238023ba8920f168572230d0be11da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3581fc2d7d269d8aada4e4054a15546"><td class="memItemLeft" align="right" valign="top"><a id="ad3581fc2d7d269d8aada4e4054a15546"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setInfoCallback</b> (AACInfoCallback cb, void *caller=nullptr)</td></tr>
<tr class="separator:ad3581fc2d7d269d8aada4e4054a15546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11d2782abe3f7675dcc9460016fe3ee8"><td class="memItemLeft" align="right" valign="top"><a id="a11d2782abe3f7675dcc9460016fe3ee8"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setDataCallback</b> (AACDataCallback cb)</td></tr>
<tr class="separator:a11d2782abe3f7675dcc9460016fe3ee8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25c720a79d70bf35da7405442686512d"><td class="memItemLeft" align="right" valign="top"><a id="a25c720a79d70bf35da7405442686512d"></a>
_AACFrameInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_a_a_c_decoder_helix.html#a25c720a79d70bf35da7405442686512d">audioInfo</a> ()</td></tr>
<tr class="memdesc:a25c720a79d70bf35da7405442686512d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the last available _AACFrameInfo_t. <br /></td></tr>
<tr class="separator:a25c720a79d70bf35da7405442686512d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a785e35c734f7351daaca0b915cf4fb68"><td class="memItemLeft" align="right" valign="top"><a id="a785e35c734f7351daaca0b915cf4fb68"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_a_a_c_decoder_helix.html#a785e35c734f7351daaca0b915cf4fb68">end</a> () override</td></tr>
<tr class="memdesc:a785e35c734f7351daaca0b915cf4fb68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Releases the reserved memory. <br /></td></tr>
<tr class="separator:a785e35c734f7351daaca0b915cf4fb68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acffadea654dec9e804581b0cb5f42cd3"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_a_a_c_decoder_helix.html#acffadea654dec9e804581b0cb5f42cd3">maxFrameSize</a> () override</td></tr>
<tr class="separator:acffadea654dec9e804581b0cb5f42cd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a273fb7ceca9e4e213c5e7722c77cc461"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_a_a_c_decoder_helix.html#a273fb7ceca9e4e213c5e7722c77cc461">maxPCMSize</a> () override</td></tr>
<tr class="separator:a273fb7ceca9e4e213c5e7722c77cc461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdfad65dca1bff4b7d7d82566540d0fd"><td class="memItemLeft" align="right" valign="top"><a id="abdfad65dca1bff4b7d7d82566540d0fd"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_a_a_c_decoder_helix.html#abdfad65dca1bff4b7d7d82566540d0fd">setAudioInfo</a> (int channels, int samplerate)</td></tr>
<tr class="memdesc:abdfad65dca1bff4b7d7d82566540d0fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used by M3A format. <br /></td></tr>
<tr class="separator:abdfad65dca1bff4b7d7d82566540d0fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac288a7c95a9008c680602bd7491f38cd"><td class="memItemLeft" align="right" valign="top"><a id="ac288a7c95a9008c680602bd7491f38cd"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setOutput</b> (Print &amp;output)</td></tr>
<tr class="separator:ac288a7c95a9008c680602bd7491f38cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe270a310224fd635212ffe058394fdf"><td class="memItemLeft" align="right" valign="top"><a id="abe270a310224fd635212ffe058394fdf"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#abe270a310224fd635212ffe058394fdf">begin</a> ()</td></tr>
<tr class="memdesc:abe270a310224fd635212ffe058394fdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the processing. <br /></td></tr>
<tr class="separator:abe270a310224fd635212ffe058394fdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a819f83e0c2bdcac195c2170c205bd0f3"><td class="memItemLeft" align="right" valign="top"><a id="a819f83e0c2bdcac195c2170c205bd0f3"></a>
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#a819f83e0c2bdcac195c2170c205bd0f3">write</a> (const void *in_ptr, size_t in_size)</td></tr>
<tr class="memdesc:a819f83e0c2bdcac195c2170c205bd0f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">decodes the next segments from the input. The data can be provided in one big or in small incremental pieces. It is suggested to be called in the Arduino Loop. If the provided data does not fit into the buffer it is split up into small pieces that fit <br /></td></tr>
<tr class="separator:a819f83e0c2bdcac195c2170c205bd0f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9a86287193583640835f7772a047f97"><td class="memItemLeft" align="right" valign="top"><a id="ac9a86287193583640835f7772a047f97"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#ac9a86287193583640835f7772a047f97">operator bool</a> ()</td></tr>
<tr class="memdesc:ac9a86287193583640835f7772a047f97"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns true if active <br /></td></tr>
<tr class="separator:ac9a86287193583640835f7772a047f97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95968d071da149606db651c2dbf336af"><td class="memItemLeft" align="right" valign="top"><a id="a95968d071da149606db651c2dbf336af"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#a95968d071da149606db651c2dbf336af">timeOfLastWrite</a> ()</td></tr>
<tr class="memdesc:a95968d071da149606db651c2dbf336af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the timestamp in ms of last write. <br /></td></tr>
<tr class="separator:a95968d071da149606db651c2dbf336af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3030ef3ef276399001b76e968497c59"><td class="memItemLeft" align="right" valign="top"><a id="ab3030ef3ef276399001b76e968497c59"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#ab3030ef3ef276399001b76e968497c59">timeOfLastResult</a> ()</td></tr>
<tr class="memdesc:ab3030ef3ef276399001b76e968497c59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the timestamp in ms of last decoded result. <br /></td></tr>
<tr class="separator:ab3030ef3ef276399001b76e968497c59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31a21e065ebe6924103d2bfe1e70509a"><td class="memItemLeft" align="right" valign="top"><a id="a31a21e065ebe6924103d2bfe1e70509a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#a31a21e065ebe6924103d2bfe1e70509a">flush</a> ()</td></tr>
<tr class="memdesc:a31a21e065ebe6924103d2bfe1e70509a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode all open packets. <br /></td></tr>
<tr class="separator:a31a21e065ebe6924103d2bfe1e70509a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28a81c90298d1dbc107b2b799ce3fed2"><td class="memItemLeft" align="right" valign="top"><a id="a28a81c90298d1dbc107b2b799ce3fed2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#a28a81c90298d1dbc107b2b799ce3fed2">setMaxFrameSize</a> (size_t len)</td></tr>
<tr class="memdesc:a28a81c90298d1dbc107b2b799ce3fed2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define your optimized maximum frame size in bytes. <br /></td></tr>
<tr class="separator:a28a81c90298d1dbc107b2b799ce3fed2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad81283a33815f2c1b915a4c00393e22d"><td class="memItemLeft" align="right" valign="top"><a id="ad81283a33815f2c1b915a4c00393e22d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#ad81283a33815f2c1b915a4c00393e22d">setMaxPCMSize</a> (size_t len)</td></tr>
<tr class="memdesc:ad81283a33815f2c1b915a4c00393e22d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define your optimized maximum pcm buffer size in bytes. <br /></td></tr>
<tr class="separator:ad81283a33815f2c1b915a4c00393e22d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48a996faa5a49aa6c397c62c3731a978"><td class="memItemLeft" align="right" valign="top"><a id="a48a996faa5a49aa6c397c62c3731a978"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#a48a996faa5a49aa6c397c62c3731a978">setReference</a> (void *ref)</td></tr>
<tr class="memdesc:a48a996faa5a49aa6c397c62c3731a978"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define some additional information which will be provided back in the callbacks. <br /></td></tr>
<tr class="separator:a48a996faa5a49aa6c397c62c3731a978"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ac64dd8567d6e2340588f8dfdfc3919e3"><td class="memItemLeft" align="right" valign="top"><a id="ac64dd8567d6e2340588f8dfdfc3919e3"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_a_a_c_decoder_helix.html#ac64dd8567d6e2340588f8dfdfc3919e3">allocateDecoder</a> () override</td></tr>
<tr class="memdesc:ac64dd8567d6e2340588f8dfdfc3919e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate the decoder. <br /></td></tr>
<tr class="separator:ac64dd8567d6e2340588f8dfdfc3919e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad203976ab151275415f218edad60f4e0"><td class="memItemLeft" align="right" valign="top"><a id="ad203976ab151275415f218edad60f4e0"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_a_a_c_decoder_helix.html#ad203976ab151275415f218edad60f4e0">findSynchWord</a> (int offset=0) override</td></tr>
<tr class="memdesc:ad203976ab151275415f218edad60f4e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">finds the sync word in the buffer <br /></td></tr>
<tr class="separator:ad203976ab151275415f218edad60f4e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7ad561194233d8944536413cfa160dc"><td class="memItemLeft" align="right" valign="top"><a id="aa7ad561194233d8944536413cfa160dc"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_a_a_c_decoder_helix.html#aa7ad561194233d8944536413cfa160dc">decode</a> () override</td></tr>
<tr class="memdesc:aa7ad561194233d8944536413cfa160dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">decods the data and removes the decoded frame from the buffer <br /></td></tr>
<tr class="separator:aa7ad561194233d8944536413cfa160dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cac33255ed77a0b1d5161f6606e750c"><td class="memItemLeft" align="right" valign="top"><a id="a3cac33255ed77a0b1d5161f6606e750c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>provideResult</b> (_AACFrameInfo &amp;info)</td></tr>
<tr class="separator:a3cac33255ed77a0b1d5161f6606e750c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbc0bbf7315f02725bf8df20cc620c26"><td class="memItemLeft" align="right" valign="top"><a id="afbc0bbf7315f02725bf8df20cc620c26"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#afbc0bbf7315f02725bf8df20cc620c26">presync</a> ()</td></tr>
<tr class="memdesc:afbc0bbf7315f02725bf8df20cc620c26"><td class="mdescLeft">&#160;</td><td class="mdescRight">make sure that we start with a valid sync: remove ID3 data <br /></td></tr>
<tr class="separator:afbc0bbf7315f02725bf8df20cc620c26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb501010c3d53d97373a428df6fd582e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#afb501010c3d53d97373a428df6fd582e">resynch</a> (int rc)</td></tr>
<tr class="separator:afb501010c3d53d97373a428df6fd582e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06fb5c57ba1b3ba1604f6a9230a92f8b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#a06fb5c57ba1b3ba1604f6a9230a92f8b">removeInvalidData</a> (int pos)</td></tr>
<tr class="separator:a06fb5c57ba1b3ba1604f6a9230a92f8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a257caea25e01dbc21d6deb0509f7c37d"><td class="memItemLeft" align="right" valign="top"><a id="a257caea25e01dbc21d6deb0509f7c37d"></a>
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#a257caea25e01dbc21d6deb0509f7c37d">writeChunk</a> (const void *in_ptr, size_t in_size)</td></tr>
<tr class="memdesc:a257caea25e01dbc21d6deb0509f7c37d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decoding Loop: We decode the procided data until we run out of data. <br /></td></tr>
<tr class="separator:a257caea25e01dbc21d6deb0509f7c37d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7e82663fe1aada96ffb3d5fee1683a6"><td class="memItemLeft" align="right" valign="top"><a id="af7e82663fe1aada96ffb3d5fee1683a6"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#af7e82663fe1aada96ffb3d5fee1683a6">minFrameBufferSize</a> ()</td></tr>
<tr class="memdesc:af7e82663fe1aada96ffb3d5fee1683a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the actual minimum frame buffer size. <br /></td></tr>
<tr class="separator:af7e82663fe1aada96ffb3d5fee1683a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a843186aabc424e76ca263145917640d5"><td class="memItemLeft" align="right" valign="top"><a id="a843186aabc424e76ca263145917640d5"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibhelix_1_1_common_helix.html#a843186aabc424e76ca263145917640d5">setMinFrameBufferSize</a> (int size)</td></tr>
<tr class="memdesc:a843186aabc424e76ca263145917640d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the minimum frame buffer size which is required before starting the decoding. <br /></td></tr>
<tr class="separator:a843186aabc424e76ca263145917640d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a10c512b0e1cd63a0fc33cceb83c132b2"><td class="memItemLeft" align="right" valign="top"><a id="a10c512b0e1cd63a0fc33cceb83c132b2"></a>
HAACDecoder&#160;</td><td class="memItemRight" valign="bottom"><b>decoder</b> = nullptr</td></tr>
<tr class="separator:a10c512b0e1cd63a0fc33cceb83c132b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0a877675ffc2817e61609dc31647928"><td class="memItemLeft" align="right" valign="top"><a id="ad0a877675ffc2817e61609dc31647928"></a>
AACDataCallback&#160;</td><td class="memItemRight" valign="bottom"><b>pcmCallback</b> = nullptr</td></tr>
<tr class="separator:ad0a877675ffc2817e61609dc31647928"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09011d605753448be95c2a9166543616"><td class="memItemLeft" align="right" valign="top"><a id="a09011d605753448be95c2a9166543616"></a>
AACInfoCallback&#160;</td><td class="memItemRight" valign="bottom"><b>infoCallback</b> = nullptr</td></tr>
<tr class="separator:a09011d605753448be95c2a9166543616"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06359ab47a9b0af1818c4aac20daec1c"><td class="memItemLeft" align="right" valign="top"><a id="a06359ab47a9b0af1818c4aac20daec1c"></a>
_AACFrameInfo&#160;</td><td class="memItemRight" valign="bottom"><b>aacFrameInfo</b></td></tr>
<tr class="separator:a06359ab47a9b0af1818c4aac20daec1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f8d745ddbb6a23e42e3b924ab67376d"><td class="memItemLeft" align="right" valign="top"><a id="a8f8d745ddbb6a23e42e3b924ab67376d"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><b>p_caller_data</b> = nullptr</td></tr>
<tr class="separator:a8f8d745ddbb6a23e42e3b924ab67376d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a298882d58b8f204f9ce4e1927ba4e25c"><td class="memItemLeft" align="right" valign="top"><a id="a298882d58b8f204f9ce4e1927ba4e25c"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>active</b> = false</td></tr>
<tr class="separator:a298882d58b8f204f9ce4e1927ba4e25c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a170501a88d334372d3810fdb99f7b49d"><td class="memItemLeft" align="right" valign="top"><a id="a170501a88d334372d3810fdb99f7b49d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_raw</b> = false</td></tr>
<tr class="separator:a170501a88d334372d3810fdb99f7b49d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ee7f63b5a5982d81ce06dfdf382ef22"><td class="memItemLeft" align="right" valign="top"><a id="a3ee7f63b5a5982d81ce06dfdf382ef22"></a>
Vector&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>pcm_buffer</b> {0}</td></tr>
<tr class="separator:a3ee7f63b5a5982d81ce06dfdf382ef22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afaae1c6053a650e3530e4abcf7e72a69"><td class="memItemLeft" align="right" valign="top"><a id="afaae1c6053a650e3530e4abcf7e72a69"></a>
SingleBuffer&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>frame_buffer</b> {0}</td></tr>
<tr class="separator:afaae1c6053a650e3530e4abcf7e72a69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1052e32709c2473bb49a1019e25d02b"><td class="memItemLeft" align="right" valign="top"><a id="af1052e32709c2473bb49a1019e25d02b"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>max_frame_size</b> = 0</td></tr>
<tr class="separator:af1052e32709c2473bb49a1019e25d02b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09132f92a4ab8d569e70633508ba3439"><td class="memItemLeft" align="right" valign="top"><a id="a09132f92a4ab8d569e70633508ba3439"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>max_pcm_size</b> = 0</td></tr>
<tr class="separator:a09132f92a4ab8d569e70633508ba3439"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a336e7463251459dcdd134dddce940147"><td class="memItemLeft" align="right" valign="top"><a id="a336e7463251459dcdd134dddce940147"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>frame_counter</b> = 0</td></tr>
<tr class="separator:a336e7463251459dcdd134dddce940147"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24b71454c1a9b4923cba6062aa819b52"><td class="memItemLeft" align="right" valign="top"><a id="a24b71454c1a9b4923cba6062aa819b52"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>delay_ms</b> = -1</td></tr>
<tr class="separator:a24b71454c1a9b4923cba6062aa819b52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5067e297eef3ab3f1b7e50fdeca876f"><td class="memItemLeft" align="right" valign="top"><a id="ad5067e297eef3ab3f1b7e50fdeca876f"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>parse_0_count</b> = 0</td></tr>
<tr class="separator:ad5067e297eef3ab3f1b7e50fdeca876f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49a4cb5fdc1acf28563265bfe95c7bb8"><td class="memItemLeft" align="right" valign="top"><a id="a49a4cb5fdc1acf28563265bfe95c7bb8"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>min_frame_buffer_size</b> = 0</td></tr>
<tr class="separator:a49a4cb5fdc1acf28563265bfe95c7bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae89c31d132c798c1b978709b49a0919f"><td class="memItemLeft" align="right" valign="top"><a id="ae89c31d132c798c1b978709b49a0919f"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>time_last_write</b> = 0</td></tr>
<tr class="separator:ae89c31d132c798c1b978709b49a0919f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18cb3ebb5c87ac15622ae2a2b85c9793"><td class="memItemLeft" align="right" valign="top"><a id="a18cb3ebb5c87ac15622ae2a2b85c9793"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>time_last_result</b> = 0</td></tr>
<tr class="separator:a18cb3ebb5c87ac15622ae2a2b85c9793"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eb4e4307e3c5ed14450c36cf55bfe5a"><td class="memItemLeft" align="right" valign="top"><a id="a5eb4e4307e3c5ed14450c36cf55bfe5a"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><b>p_caller_ref</b> = nullptr</td></tr>
<tr class="separator:a5eb4e4307e3c5ed14450c36cf55bfe5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ae27d9a16599528c0e80530b8562358"><td class="memItemLeft" align="right" valign="top"><a id="a7ae27d9a16599528c0e80530b8562358"></a>
Print *&#160;</td><td class="memItemRight" valign="bottom"><b>out</b> = nullptr</td></tr>
<tr class="separator:a7ae27d9a16599528c0e80530b8562358"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A simple Arduino API for the libhelix AAC decoder. The data us provided with the help of <a class="el" href="classlibhelix_1_1_common_helix.html#a819f83e0c2bdcac195c2170c205bd0f3" title="decodes the next segments from the input. The data can be provided in one big or in small incremental...">write()</a> calls. The decoded result is available either via a callback method or via an output stream. </p>
<dl class="section author"><dt>Author</dt><dd>Phil Schatzmann </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GPLv3 </dd></dl>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="acffadea654dec9e804581b0cb5f42cd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acffadea654dec9e804581b0cb5f42cd3">&#9670;&nbsp;</a></span>maxFrameSize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_t libhelix::AACDecoderHelix::maxFrameSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Provides the maximum frame size in bytes - this is allocated on the heap and you can reduce the heap size my minimizing this value </p>

<p>Implements <a class="el" href="classlibhelix_1_1_common_helix.html#a5b0fff8a3e335fe2ae5d7e2ed744cc15">libhelix::CommonHelix</a>.</p>

</div>
</div>
<a id="a273fb7ceca9e4e213c5e7722c77cc461"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a273fb7ceca9e4e213c5e7722c77cc461">&#9670;&nbsp;</a></span>maxPCMSize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">size_t libhelix::AACDecoderHelix::maxPCMSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Provides the maximum pcm buffer size in bytes - this is allocated on the heap and you can reduce the heap size my minimizing this value </p>

<p>Implements <a class="el" href="classlibhelix_1_1_common_helix.html#a0c78a63c35669f2e83cd6d51b211248a">libhelix::CommonHelix</a>.</p>

</div>
</div>
<a id="a06fb5c57ba1b3ba1604f6a9230a92f8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06fb5c57ba1b3ba1604f6a9230a92f8b">&#9670;&nbsp;</a></span>removeInvalidData()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool libhelix::CommonHelix::removeInvalidData </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>pos</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">inherited</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>removes invalid data not starting with a synch word. </p><dl class="section return"><dt>Returns</dt><dd>Returns true if we still have data to be played </dd></dl>

</div>
</div>
<a id="afb501010c3d53d97373a428df6fd582e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb501010c3d53d97373a428df6fd582e">&#9670;&nbsp;</a></span>resynch()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool libhelix::CommonHelix::resynch </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>rc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">inherited</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>advance on invalid data, returns true if we need to continue the processing </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/<a class="el" href="_a_a_c_decoder_helix_8h_source.html">AACDecoderHelix.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>
